There is a high demand of cloud storage systems which deliver local NAS (Network Attached Storage) features to globally distributed sites. For a company with multiple globally distributed sites, users at each site are able to perform general NAS features such as creating, deleting or copying of directories or files on the same file systems that are shared among sites.
For example, there is a file system in which a CAS (Content Addressed Storage) is located at a data center, multiple NAS apparatuses are located at sites such as departments of a company, the CAS apparatus and the NAS apparatuses are connected via a communication network such as WAN (Wide Area Network). The file system is shared among users using the NAS apparatuses and its namespace and data are intensively managed at the CAS apparatus. Via the NAS apparatus, every user at each site is able to perform read or write operations that modify the sharing namespace such as creating or deleting directories or files. To provide such functionalities, the consistency of the shared namespace must be maintained carefully.
To maintain the consistency of the shared namespace, specifically the systems should avoid the conflictions of modifying the same part of the namespace by creating or deleting the related files or directories. For instance, the confliction occurred when multiple users create the files with the same identifier (e.g. pathname), or multiple users create or delete multiple directories belonging to the same parent directory. It is well recognized that directory operations such as directory copies or archived file decompression, which create a directory that contains multiple sub-directories inside, makes the maintenance more difficult because it will lead to huge changes in the structure of the file system's namespace.
PTL1 discloses that the consistency of the namespace is guaranteed through a directory entry lock mechanism. The directory is only modified when its parent directory is locking. The locking is removed after the creation processing is finished. Here, the basic processing during directory operation such as locking the parent directory, executing the directory creating request, updating the entries inside the inodes that describe the contents of the directories are serialized consequently. PTL2 provides a method of data sharing among multiple entities via employing a distributed snapshot-lock on a versioning file system. When the entity wants to change the structure of the file system, it must first acquire the snapshot-lock to apply the changes to the current file system. And at the same time, the snapshot-lock is provided to one entity only.